use serde::{Deserialize, Serialize};
use std::collections::HashMap;

// 工具调用指令：模型返回的工具调用格式
#[derive(Debug, Serialize, Deserialize)]
pub struct ToolCall {
    pub name: String,          // 工具名称（如"weather"、"calculator"）
    pub parameters: HashMap<String, serde_json::Value>,  // 工具参数（键值对）
}

// 工具调用结果
#[derive(Debug)]
pub struct ToolResult {
    pub success: bool,
    pub content: String,       // 工具返回的内容
}

// 工具接口：所有工具需实现此trait
pub trait Tool {
    fn name(&self) -> &str;                  // 工具名称
    fn run(&self, params: &HashMap<String, serde_json::Value>) -> Result<ToolResult, String>;
}